Linux下定期备份数据库

Linux下定期备份数据库

emmm最近某个项目数据库被绑架的事实还缠绕在脑里,从此注重数据库以及服务器这方面的容灾能力,其中对于数据库而言,备份比较重要

使用docker备份数据库

1
docker exec -it <containerId> mysqldump -u<username> -p<password> -h<host> --tables<databaseName> > /path/to/save/your/backup

上面就是docker下的对远程某个mysql进行数据库备份。最后 > 右边的地址是要存放备份文件的地址。

使用mysql命令备份数据库

1
mysqldump -u<username> -p<password> -h<host> --tables<databaseName> > /path/as/same

跟docker上面的差不多,就是直接使用mysqldump

我在某篇文章的评论中看到,用mysqldump会被经理骂?然后网上找了下有个mysqlhotcopy工具,这篇文章mysqlhotcopy的优点就是快,缺点就是只支持MyISAM,然后想了想,项目数据库不使用MyISAM存储引擎,所以就没用mysqlhotcopy来进行备份。

创建定时任务

编写定时任务

1
mkdir backup

创建一个文件夹保存备份文件以及定时任务需要执行的shell文件(这里放在/home下)

1
2
cd backup/
vi backup.sh

进入文件夹,使用vim编辑shell文件,如下

1
2
3
4
5
6
7
8
9
#!/bin/bash

time=`date +%Y%m%d_%H%M%S`
data_dir='/path/to/save/your/task/'

docker exec -it <containerId> mysqldump -u<username> -p<password> -h<host> --tables<databaseName> > /path/to/save/your/backup/datebasename_${time}.sql

old_time=`date --date='8 day ago'+%Y%m%d`
rm -rf /path/to/save/your/backup/databasename_${old_time}*

利用crontab创建定时任务

定时任务使用Linux下的crontab模块,稍微配置一下就可以了

  • 创建
1
crontab -e
  • 添加定时任务

添加定时任务

在上面图片末尾添加0 23 Sun /home/backup/backup.sh,这里使用了crontab表达式,后面紧接着要执行的命令,当然最后是一个shell文件,里面是一个个命令集。

然后就等待他吧

若想删除掉定时任务只需要

1
crontab -r
-------------本文结束感谢您的阅读-------------